Method and apparatus for a client call service

ABSTRACT

A method, apparatus, and computer instructions for providing access to an application. An operating system is identified on the client responsive to receiving a request for access to the application from a client. An appropriate version of the application for the client is selected in response to identifying the operating system. The files required on the client are sent for execution of the appropriate version of the application to the client. A billing process is initiated to identify an amount time during which the appropriate version of the application is used on the client.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates generally to an improved data processingsystem and in particular to a method and apparatus for processing data.Still more particularly, the present invention relates to a method,apparatus, and computer instructions for providing access toapplications.

2. Description of Related Art

In today's personal home computing environments, users purchase andmaintain various application software to perform various tasks. Thesetasks include creating documents, such as letters or notes using wordprocessing programs. Additionally, users may maintain budgets andpersonal finance projections with financial programs. E-mail programsare employed to send and receive messages. Much time and money is wastedon upgrading this application software. Some products are installed anddistributed with “bugs” or security holes. Installation of theseapplications typically requires a re-installation effort to deployfixes, patches, and/or upgrades.

Additionally, many software packages purchased by users containapplications that are never used by those users. For example, the usermay purchase an application package that is bundled with a wordprocessing program, a spreadsheet program, an e-mail program, and adatabase access program. In many instances, the user will never use thedatabase access program. As a result, the user has wasted money and diskspace by installing the package. Additionally, depending on the locationand market, some home users may require applications to complete certaintasks but find that those applications are not readily available. Forexample, vendors may not offer a particular application or version of anapplication in certain countries. Further, some business users requireapplications that are available at work, but not at home in order toperform some tasks from home.

Additional time and money are wasted because many software vendorsgenerate upgrades for software packages on a yearly basis. Users areforced to purchase these upgrades in order to use the new features inthese more recent versions. In order to share these new documents orfiles, other users are forced to upgrade their software packages inorder to use these new documents or files because these documents orfiles were created with a newer version of a software package and maynot be compatible with those of an older version.

Therefore, it would be advantageous to have an improved method,apparatus, and computer instructions for allowing a user to accessapplications without requiring maintenance of those applications.

SUMMARY OF THE INVENTION

The present invention provides a method, apparatus, and computerinstructions for providing access to an application. An operating systemis identified on the client responsive to receiving a request for accessto the application from a client. An appropriate version of theapplication for the client is selected in response to identifying theoperating system. The files required on the client are sent forexecution of the appropriate version of the application to the client. Abilling process is initiated to identify an amount time during which theappropriate version of the application is used on the client.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the present invention areset forth in the appended claims. The invention itself, however, as wellas a preferred mode of use, further objectives and advantages thereof,will best be understood by reference to the following detaileddescription of an illustrative embodiment when read in conjunction withthe accompanying drawings, wherein:

FIG. 1 is a pictorial representation of a network of data processingsystems in which the present invention may be implemented;

FIG. 2 is a block diagram of a data processing system that may beimplemented as a server in accordance with a preferred embodiment of thepresent invention;

FIG. 3 is a block diagram illustrating a data processing system in whichthe present invention may be implemented;

FIG. 4 is a diagram illustrating components used in providingapplications to a user in accordance with a preferred embodiment of thepresent invention;

FIG. 5 is a diagram illustrating a billing window in accordance with apreferred embodiment of the present invention;

FIG. 6 is a flowchart of a process for providing a user access toapplications on a server in accordance with a preferred embodiment ofthe present invention;

FIG. 7 is a flowchart of a process for monitoring application usage of aclient in accordance with a preferred embodiment of the presentinvention; and

FIG. 8 is a flowchart of a process for monitoring use of applications ona client in accordance with a preferred embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

With reference now to the figures, FIG. 1 depicts a pictorialrepresentation of a network of data processing systems in which thepresent invention may be implemented. Network data processing system 100is a network of computers in which the present invention may beimplemented. Network data processing system 100 contains a network 102,which is the medium used to provide communications links between variousdevices and computers connected together within network data processingsystem 100. Network 102 may include connections, such as wire, wirelesscommunication links, or fiber optic cables.

In the depicted example, server 104 is connected to network 102 alongwith storage unit 106. In addition, clients 108, 110, 112, and 114 areconnected to network 102. Clients 108, 110, and 112 may be, for example,personal computers or network computers. Client 114 is a portableclient, such as a personal digital assistant (PDA). In the depictedexample, server 104 provides data, such as boot files, operating systemimages, and applications to clients 108-112. Clients 108, 110, and 112are clients to server 104. Network data processing system 100 mayinclude additional servers, clients, and other devices not shown. In thedepicted example, network data processing system 100 is the Internetwith network 102 representing a worldwide collection of networks andgateways that use the Transmission Control Protocol/Internet Protocol(TCP/IP) suite of protocols to communicate with one another. At theheart of the Internet is a backbone of high-speed data communicationlines between major nodes or host computers, consisting of thousands ofcommercial, government, educational and other computer systems thatroute data and messages. Of course, network data processing system 100also may be implemented as a number of different types of networks, suchas for example, an intranet, a local area network (LAN), or a wide areanetwork (WAN). FIG. 1 is intended as an example, and not as anarchitectural limitation for the present invention.

Referring to FIG. 2, a block diagram of a data processing system thatmay be implemented as a server, such as server 104 in FIG. 1, isdepicted in accordance with a preferred embodiment of the presentinvention. Data processing system 200 may be a symmetric multiprocessor(SMP) system including a plurality of processors 202 and 204 connectedto system bus 206. Alternatively, a single processor system may beemployed. Also connected to system bus 206 is memory controller/cache208, which provides an interface to local memory 209. I/O bus bridge 210is connected to system bus 206 and provides an interface to I/O bus 212.Memory controller/cache 208 and I/O bus bridge 210 may be integrated asdepicted.

Peripheral component interconnect (PCI) bus bridge 214 connected to I/Obus 212 provides an interface to PCI local bus 216. A number of modemsmay be connected to PCI local bus 216. Typical PCI bus implementationswill support four PCI expansion slots or add-in connectors.Communications links to clients 108-112 in FIG. 1 may be providedthrough modem 218 and network adapter 220 connected to PCI local bus 216through add-in boards.

Additional PCI bus bridges 222 and 224 provide interfaces for additionalPCI local buses 226 and 228, from which additional modems or networkadapters may be supported. In this manner, data processing system 200allows connections to multiple network computers. A memory-mappedgraphics adapter 230 and hard disk 232 may also be connected to I/O bus212 as depicted, either directly or indirectly.

Those of ordinary skill in the art will appreciate that the hardwaredepicted in FIG. 2 may vary. For example, other peripheral devices, suchas optical disk drives and the like, also may be used in addition to orin place of the hardware depicted. The depicted example is not meant toimply architectural limitations with respect to the present invention.

The data processing system depicted in FIG. 2 may be, for example, anIBM eServer pSeries system, a product of International Business MachinesCorporation in Armonk, N.Y., running the Advanced Interactive Executive(AIX) operating system or LINUX operating system.

With reference now to FIG. 3, a block diagram illustrating a dataprocessing system is depicted in which the present invention may beimplemented. Data processing system 300 is an example of a clientcomputer. Data processing system 300 employs a peripheral componentinterconnect (PCI) local bus architecture. Although the depicted exampleemploys a PCI bus, other bus architectures such as Accelerated GraphicsPort (AGP) and Industry Standard Architecture (ISA) may be used.Processor 302 and main memory 304 are connected to PCI local bus 306through PCI bridge 308. PCI bridge 308 also may include an integratedmemory controller and cache memory for processor 302. Additionalconnections to PCI local bus 306 may be made through direct componentinterconnection or through add-in boards. In the depicted example, localarea network (LAN) adapter 310, SCSI host bus adapter 312, and expansionbus interface 314 are connected to PCI local bus 306 by direct componentconnection. In contrast, audio adapter 316, graphics adapter 318, andaudio/video adapter 319 are connected to PCI local bus 306 by add-inboards inserted into expansion slots. Expansion bus interface 314provides a connection for a keyboard and mouse adapter 320, modem 322,and additional memory 324. Small computer system interface (SCSI) hostbus adapter 312 provides a connection for hard disk drive 326, tapedrive 328, and CD-ROM drive 330. Typical PCI local bus implementationswill support three or four PCI expansion slots or add-in connectors.

An operating system runs on processor 302 and is used to coordinate andprovide control of various components within data processing system 300in FIG. 3. The operating system may be a commercially availableoperating system, such as Windows XP, which is available from MicrosoftCorporation. An object oriented programming system such as Java may runin conjunction with the operating system and provide calls to theoperating system from Java programs or applications executing on dataprocessing system 300. “Java” is a trademark of Sun Microsystems, Inc.Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as hard disk drive 326, and may be loaded into main memory 304 forexecution by processor 302.

Those of ordinary skill in the art will appreciate that the hardware inFIG. 3 may vary depending on the implementation. Other internal hardwareor peripheral devices, such as flash read-only memory (ROM), equivalentnonvolatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIG. 3. Also, theprocesses of the present invention may be applied to a multiprocessordata processing system.

As another example, data processing system 300 may be a stand-alonesystem configured to be bootable without relying on some type of networkcommunication interfaces. As a further example, data processing system300 may be a personal digital assistant (PDA) device, which isconfigured with ROM and/or flash ROM in order to provide non-volatilememory for storing operating system files and/or user-generated data.

The depicted example in FIG. 3 and above-described examples are notmeant to imply architectural limitations. For example, data processingsystem 300 also may be a notebook computer or hand held computer inaddition to taking the form of a PDA. Data processing system 300 alsomay be a kiosk or a Web appliance.

The present invention provides an improved method, apparatus, andcomputer instructions for allowing a user to access and use applicationswithout having to maintain those applications. The mechanism of thepresent invention allows a user to access applications located on aremote server. A user at a client may make a call or log in to theremote server and request applications for use. In response to such arequest, critical files needed for execution of the applications aresent to the client. These files are ones that are needed by the clientto properly execute the applications.

The client executes these applications and is billed based on the amountof time that the application is used. Additionally, some essential filesare maintained on the server to prevent the user from using theapplications without being connected to the server. This mechanism isalso referred to as a client call service and allows the home user toexecute any application from anywhere at any time.

The mechanism of the present invention avoids the user having toupgrade, install patches or fixes, or locate hard to find applications.In these illustrative examples, the applications are purchased fromvendors through a concurrent use license allowing a number of concurrentusers to use the applications.

With reference now to FIG. 4, a diagram illustrating components used inproviding applications to a user is depicted in accordance with apreferred embodiment of the present invention. In this illustrativeexample, client call service (CCS) server 400 may be access by CCSclient 402. In particular, a user at CCS client 402 may desire to useone or more of applications 404 located on CCS server 400. Theseapplications are placed on CCS server 400 from vendors 406 throughvarious licensing and purchase agreements. In these illustrativeexamples, concurrent use licenses are desired for placing applications404 on CCS server 400. CCS server 400 in this illustrative example maybe implemented as software on a data processing system, such as dataprocessing system 200 in FIG. 2. CCS server 400 provides access todifferent users by storing customer or client information in a customerprofile. In this illustrative example, this customer profile contains,for example, a name, a billing address, and an e-mail address.

CCS server 400 is a logical server and may actually take the form of agroup of physical servers. This server contains applications fromdifferent vendors along with an ability to distribute critical installfiles to CCS client 402, which are stored in critical files 408. In theillustrative examples, CCS server 400 contains the latest applicationswith appropriate patches and upgrades already applied. As a result, theuser at the client is not required to perform any sort of patching orupgrading.

CCS client 402 uses a high-speed or broadband connection to communicatewith CCS server 400. CCS client 402 registers with CCS server 400 inorder to use applications 404. In these examples, user files are keptlocally on CCS client 402 for security reasons. These user files arestored with critical files 408. Only application files are distributedacross the network data processing system between CCS server 400 and CCSclient 402. Such a feature is especially important when the network dataprocessing system involves the Internet. CCS client 402 may beimplemented-as software executing on a data processing system, such asdata processing system 300 in FIG. 3.

Billing process 410 is a monitoring process that monitors what softwareapplications are used by a client and generates data for billingpurposes. This data is stored and may be combined into a monthlystatement for the user. Billing process 410 also includes a client-sidecomponent, billing agent 412. Billing agent 412 displays billing window414 to provide status information to the user. This informationincludes, for example, the name of currently used applications alongwith their respective prices on a permanent basis. These prices areillustrated because some applications may cost more to use than otherapplications.

Billing window 414 is updated on a minutely basis in these depictedexamples. Additionally, a running tab of total cost for the session alsomay be displayed within billing window 414. Billing agent 412 alsoprovides a pause feature that may be accessed through billing window414. If the user needs to “pause” the use of critical files 408, theuser may enter an appropriate user input to pause the use of criticalfiles 408. In these illustrative examples, the input may be made througha pause button displayed in billing window 414. The user may need topause the use of critical files 408 for reasons, such as, for example,to answer a phone call or to read a document. The windows forapplications will continue to be displayed on CCS client 402, but theapplications are in a locked or read-only mode.

In this illustrative example, a user at CCS client 402 logs onto CCSserver 400 and locates an application from applications 404. Theapplication may be, for example, an editing or word processingapplication. CCS server 400 verifies the client operating system andsends the appropriate files to CCS client 402 to form critical files408. When the user completes the editing process and closes theapplication, the user then locates an e-mail or notes program fromapplications 404. The files for this application are sent fromapplications 404 to critical files 408. Files, such as a personaladdress book are permanently stored as part of critical files 408.

The user then generates an e-mail message attaching a picture and sendsthe message. The user then closes the application and logs off CCSserver 400. In response, billing agent 412 sends billing informationback to CCS server 400. Billing process 410 stores this information andgenerates a total usage bill on some periodic basis, such as on amonthly basis. This bill combines all applications and times used by theuser and the bill is sent to the user.

With reference next to FIG. 5, a diagram illustrating a billing windowis depicted in accordance with a preferred embodiment of the presentinvention. Billing window 500 is an example of billing window 414 inFIG. 4. As can be seen, billing window 500 lists applications on lines502 and 504. Additionally, each line also shows a price per minute (PPM)for each of the applications. Also, a total cost for the usage thus faralso is displayed on billing window 500. In this example, line 502 showsthat Lotus Notes is one application used by the user, with MicrosoftWord in line 504 being a second application selected by the user.

The user may pause usage of the applications by selecting “Pause” button506. Selection of this button results in the applications being lockedor frozen. The user may still view the windows but functionality for theprograms is halted. In this manner, the user may attend to other tasks,such as answering a phone or reading a document without being chargedfor use when the applications are not in use by the user.

Turning next to FIG. 6, a flowchart of a process for providing a useraccess to applications on a server is depicted in accordance with apreferred embodiment of the present invention. The process illustratedin FIG. 6 may be implemented in a server process, such as CCS server 400in FIG. 4.

The process begins by receiving a request for an application from aclient (step 600). This request may be received through a user selectingan application from a list of applications displayed at the client.Thereafter, the operating system for the client is identified (step602). This identification of the operating system may be made as part ofthe request received from the client. Alternatively, the operatingsystem of the client may be identified when the user registers for usewith the service.

Next, a version of the requested application selected based on theidentified operating system (step 604). The critical execution files aresent to the client (step 606). Thereafter, the billing process isstarted for the application (step 608). Step 608 in these illustrativeexamples involves starting a timer for the applications being used.

Billing agent 412 in the illustrative examples contains the processesfor executing timers to identify the amount of usage for applications.Additionally, billing agent 412 may periodically send information tobilling process 410 in case the connection between the two systems iscut or terminated accidentally. This data in the transmission is alsoreferred to as “heartbeat” data. In this manner, when the session isclosed and the user logs off, billing agent 412 sends a final set ofdata to billing process 410. This data contains the total usage for thesession as well as an identification of the applications used. Billingprocess 410 then stores this information for billing purposes.

Turning next to FIG. 7, a flowchart of a process for monitoringapplication usage of a client is depicted in accordance with a preferredembodiment of the present invention. The process illustrated in FIG. 7may be implemented in a billing process on a server, such as billingprocess 410 in FIG. 4.

The process begins by waiting for a period of time to receive data fromthe billing agent (step 700). After the period of time has passed, adetermination is made as to whether data has been received (step 702).The billing service expects heartbeat data from the billing agent on aperiodic basis. If data has been received, a determination is made as towhether the data indicates that the session should be terminated (step704). If the session is to be terminated, then final billing data isidentified from the data received (step 706). This billing data is savedfor the session (step 708) with the process terminating thereafter.

With reference again to step 704, if the session is not terminated, thebilling data is saved (step 710) with the process then returning to step700. This data is received and saved in the event that the connectionwith the billing agent is lost. In this manner, some billing informationmay be present for billing for the portion of the session.

With reference again to step 702, if data has not been received duringthe period of time, a determination is made as to whether a timeout hasoccurred (step 712). If a timeout has not occurred, the process returnsto step 700. Otherwise, any billing data present for the client is savedas billing data for the session (step 714). An error report is generatedto indicate that an unexpected termination has occurred (step 716) withthe process terminating thereafter.

With reference now to FIG. 8, a flowchart of a process for monitoringuse of applications on a client is depicted in accordance with apreferred embodiment of the present invention. The process illustratedin FIG. 8 may be implemented on a billing agent, such as billing agent412 in FIG. 4.

The process begins by starting a timer (step 800). After the timer hasbeen started, a status window is displayed (step 802). The status windowdisplayed in step 802 is similar to status window 500 in FIG. 5. Next, adetermination is made as to whether heartbeat data should be sent to thebilling process (step 804). This determination is made by seeing whethersome selected period of time has passed. Data typically is sent on aperiodic basis to the billing process at the server to provide some datafor billing purposes if the client should unexpectedly terminate or theconnection should be terminated.

If heartbeat data is not to be sent, the display of the status window isupdated (step 806). A determination is then made as to whether a userinput has been received pausing the application (step 808). If a userinput pausing the applications has not been received, a determination ismade as to whether a user input has been received to log out orterminate the session (step 810). If the user does not terminate thesession, the process returns to step 804 as described above. Otherwise,the status window is closed (step 812), and billing data is sent to thebilling process (step 814) with the process terminating thereafter. Thebilling data sent in step 814 is a total of all time used for theapplications.

With reference again to step 808, if a pause has been selected by theuser, the applications are locked (step 816) and the timers are paused(step 818). Next, a determination is made as to whether the user hasunpaused the applications (step 820). If the user has unpaused, theapplications are unlocked (step 822) and the timer is started (step 824)with the process then returning to step 804 as described above.

With reference again to step 804, if a determination is made to sendheartbeat data, the heartbeat data is then sent to the billing process(step 826) with the process then continuing to step 806 as describedabove.

Thus, the present invention provides an improved method, apparatus, andcomputer instructions for providing access to applications for users.The mechanism of the present invention avoids the users having toperform any maintenance to solve problems associated with bugs orupdates. All of the updates, patches, and maintenance of applicationsare performed by the service through the CCS server as described above.

In this manner, the user also is able to select only applications thatthe user needs and avoids having to pay for applications which the usermay never require. Further, the user also may have access to neededapplications that are not as readily available in the user's locationfor purchase.

It is important to note that while the present invention has beendescribed in the context of a fully functioning data processing system,those of ordinary skill in the art will appreciate that the processes ofthe present invention are capable of being distributed in the form of acomputer readable medium of instructions and a variety of forms and thatthe present invention applies equally regardless of the particular typeof signal bearing media actually used to carry out the distribution.Examples of computer readable media include recordable-type media, suchas a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, andtransmission-type media, such as digital and analog communicationslinks, wired or wireless communications links using transmission forms,such as, for example, radio frequency and light wave transmissions. Thecomputer readable media may take the form of coded formats that aredecoded for actual use in a particular data processing system.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Forexample, the illustrative embodiment frees or locks all of theapplications when the pause button is selected. Depending on theparticular implementation, the use of the pause function may beselective in which the user may pause only one or a few of theapplications rather than all of the applications. The embodiment waschosen and described in order to best explain the principles of theinvention, the practical application, and to enable others of ordinaryskill in the art to understand the invention for various embodimentswith various modifications as are suited to the particular usecontemplated.

1. A method in a data processing system for providing access to anapplication, the method comprising: responsive to receiving a requestfor access to the application from a client, identifying an operatingsystem on the client; responsive to identifying the operating system,selecting an appropriate version of the application for the client froma list of applications displayed at the client; sending files requiredon the client for execution of the appropriate version of theapplication to the client, wherein execution of the appropriate versionof the application is processed on the data processing system; andinitiating a billing process to identify an amount of time during whichthe appropriate version of the application is used on the client,wherein the billing process comprises: starting a timer to identify anamount of elapsed time in executing the appropriate version of theapplication on the data processing system; displaying a status window,wherein the amount of elapsed time in executing the appropriate versionof the application is presented in the status window; responsive to theuser input, pausing execution of the appropriate version of theapplication, wherein pausing increases the amount of the elapsed timewhile the pausing is in effect; responsive to a user input, terminatingexecution of the appropriate version of the application; identifying theamount of the elapsed time for the appropriate version of theapplication; storing the identified amount of the elapsed time for theappropriate version of the application for use in billing the user;sending a billing agent to the client, wherein the billing agentprovides a display of status information regarding the identified amountof elapsed time, and current charges for the identified amount ofelapsed time of the appropriate version of the application.